package cn.qiguai.sphapi.mapper;

import cn.qiguai.sphapi.controller.request.PageSearchGoodsParam;
import cn.qiguai.sphapi.domain.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface GoodsMapper {
	/**
	 * 查询所有商品分类
	 * @return list
	 */
	List<GoodsCategory> selectAllCategory();

	/**
	 * 分页查询商品
	 * @param param      分页搜索商品参数
	 * @param startIndex 分页查询开始索引
	 * @return list
	 */
	List<Goods> pageSelectGoods(@Param("param") PageSearchGoodsParam param, @Param("startIndex") int startIndex);

	/**
	 * 查询搜索商品总数量
	 * @param param 分页搜索商品参数
	 * @return 搜索商品总数量
	 */
	int pageSelectGoodsCount(PageSearchGoodsParam param);

	/**
	 * 查询指定分类id的属性
	 * @param ids 分类id集合
	 * @return list
	 */
	List<GoodsCategoryAttrs> selectGoodsCategoryAttrsByCategoryId(List<Integer> ids);

	/**
	 * 查询指定属性id的属性列表
	 * @param ids 属性id
	 * @return list
	 */
	List<GoodsAttrs> selectGoodsAttrsByCategoryAttrId(List<Integer> ids);

	/**
	 * 通过关键词查询分类id
	 * @param keyword 关键词
	 * @return 分类id
	 */
	List<Integer> selectCategoryIdByKeyword(String keyword);

	/**
	 * 通过商品id查询商品基础信息
	 * @param goodsId 商品id
	 * @return 商品
	 */
	Goods selectGoodsInfo(int goodsId);

	/**
	 * 通过商品id查询售卖属性value
	 * @param goodsId 商品id
	 * @return list
	 */
	List<GoodsCategorySaleAttrsValue> selectGoodsSaleAttrsValue(int goodsId);

	/**
	 * 通过商品id查询售卖属性key
	 * @param goodsId 商品id
	 * @return list
	 */
	List<GoodsCategorySaleAttrs> selectGoodsSaleAttrs(int goodsId);

	/**
	 * 查询商品图片
	 * @param goodsId 商品id
	 * @return list
	 */
	List<String> selectGoodsImages(int goodsId);

	/**
	 * 查询商品所属分类名称
	 * @param categoryIds 商品分类id
	 * @return list
	 */
	List<String> selectGoodsCategory(List<Integer> categoryIds);
}
